/**
 * @author : HESS MArjorie, THUILLIER Jules, G4 - CIP2
 */
package UserInterface;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;

import linkTreeInterface.FileAccess;


@SuppressWarnings("serial")
public class Menu extends JMenu implements ActionListener {
	
	  
    JMenuBar menuBar;
    JMenu File, Language;
    JMenuItem menuImport, menuExport, menuEnFr, menuFrEn;



	
	public Menu(JFrame frame){
	   //On crée la barre de menu
    menuBar = new JMenuBar();

    //On ajoute une première liste
    File = new JMenu("File");
    File.setMnemonic(KeyEvent.VK_A);
    File.getAccessibleContext().setAccessibleDescription(
            "The only menu in this program that has menu items");

    //Et les items
    JMenuItem menuImport = new JMenuItem("Import",KeyEvent.VK_T);
    menuImport.setAccelerator(KeyStroke.getKeyStroke(
            KeyEvent.VK_I, ActionEvent.CTRL_MASK));
    JMenuItem menuExport = new JMenuItem("Export",KeyEvent.VK_T);
    menuExport.setAccelerator(KeyStroke.getKeyStroke(
            KeyEvent.VK_E, ActionEvent.CTRL_MASK));
    menuImport.addActionListener(this);
    menuExport.addActionListener(this);
    File.add(menuImport);
    File.add(menuExport);
    menuBar.add(File);
  
    
    /*
     
    Language = new JMenu("Langues");
    Language.setMnemonic(KeyEvent.VK_A);
    Language.getAccessibleContext().setAccessibleDescription(
            "The only menu in this program that has menu items");

    
    JMenuItem menuFrEn = new JMenuItem("Fr to En",KeyEvent.VK_T);
    menuFrEn.setAccelerator(KeyStroke.getKeyStroke(
            KeyEvent.VK_F, ActionEvent.CTRL_MASK));
    JMenuItem menuEnFr = new JMenuItem("En to Fr",KeyEvent.VK_T);
    menuEnFr.setAccelerator(KeyStroke.getKeyStroke(
            KeyEvent.VK_E, ActionEvent.CTRL_MASK));
    menuFrEn.addActionListener(this);
    menuEnFr.addActionListener(this);
    Language.add(menuFrEn);
    Language.add(menuEnFr);
    menuBar.add(Language);
    
     */
    
    frame.setJMenuBar(menuBar);
	}



// On gere les evenements du Menu
	@Override
	public void actionPerformed(ActionEvent e) {
		 if (e.getSource()instanceof JMenuItem) { 
             // gestion des evenements lies aux menus 
			 
			 
			 /**
              *  Fenetre d'import de fichiers
              */
               if (e.getActionCommand().equals("Import")){
            	   
            	   java.io.File file = null;
            	   FileFilter filter;
            	   int returnVal;
            	   
            	   // Structure do_while pour rappeler le code tant que l'utilisateur n'a pas choisit un bon fichier
            	   do{
           	   
            	   // On ajoute un filtre d'extension
            	   filter = new FileNameExtensionFilter("Ficher Texte", "txt", "TXT");
            	   
            	 //On creer le selecteur de fichier
            	   final JFileChooser chooser = new JFileChooser(); 
            	   chooser.addChoosableFileFilter(filter);
            	   
            	   returnVal = chooser.showOpenDialog(Menu.this);

                   if (returnVal == JFileChooser.APPROVE_OPTION) {
                       file = chooser.getSelectedFile();
                      if(filter.accept(file)){
                       
                       String filePath = file.getAbsolutePath();
                       
                       //On récupère l'extension du fichier sélectionné pour vérifier qu'il s'agit d'un .txt
                       String extension = filePath.substring(0, filePath.lastIndexOf('.'));
                       
                       System.out.println("Opening: " + filePath + " Extension : " + extension);
                       
                       //On lance la fonction d'Import
                       FileAccess.importFile(filePath);
                       
                   		}
                      else new ErrorDialog("Vous devez choisir un fichier texte (.txt)"); 
                   }  
                   
                   else {
                	   System.out.println("Open command cancelled by user.");
                	   return;
                   		} 
                   } while(!filter.accept(file));
               
                   
                  
               }
               
               /**
                *  Fenetre d'export du dictionnaire
                */
               else if (e.getActionCommand().equals("Export")){
            	 //On creer le selecteur de fichier
            	   JFileChooser chooser = new JFileChooser();
            
            	   int returnVal = chooser.showSaveDialog(this);
            	   if (returnVal == JFileChooser.APPROVE_OPTION )
            	   {
            	       java.io.File file = chooser.getSelectedFile();
            	       if(file == null)
            	           return;
            	       //On verifie si le fichier existe ou pas et on demande a le remplacer s'il existe
            	       if(file.exists())
            	       { 
            	    	   returnVal = JOptionPane.showConfirmDialog(this,
            	                              "Replace existing file?");

            	           if (returnVal == JOptionPane.NO_OPTION)
            	               return;
            	       }
            	   		linkTreeInterface.FileAccess.exportFile(file.getAbsolutePath()	);
            	   }

            	   	System.out.println("Export");
            	   
               }
               /*
               else if (e.getActionCommand().equals("Fr to En")){
           	   	System.out.println("Fr to En");
              }
               else if (e.getActionCommand().equals("En to Fr")){
           	   	System.out.println("En to Fr");
              }
              */
		 }
            	   
		
	}}

